// a. action内部是可以转发其他action的
// b. 一个action是可以对应多个mutation的
// c. 一般一个mutation的名字再action中总会有对应

import {GETLIST,UPTADECHOSENCONTACTID,UPTADEEDITINGCONTACT} from  "./mutation_types"
import $api from "../api/api"
const OK = 200;
export default {
  //发请求获取list数据 提交mutation来修改仓库中的list
  async getList({commit}){
    const {code,data} = await $api.get("/contactList")
    if(code === OK)
      commit(GETLIST,data)
  },

  //发请求修改list数据 提交mutation来修改仓库中的list
  async updateList({commit,dispatch},info){
    const {code,data} =  await $api.put("/contact/edit",info);
    if(code===OK){
      //一个action函数的返回值 就是 dispatch函数的返回值
      await dispatch(GETLIST)
      commit(UPTADECHOSENCONTACTID,data.id)
    }
  },

  //发送请求新增list数据
  async addList({commit,dispatch},info){
    const {code,data} = await $api.post("/contact/new/json",info);
    if(code===OK){
      await dispatch(GETLIST)
      commit(UPTADECHOSENCONTACTID,data.id)
    }
  },

  //发送请求删除list数据
  async delList({commit,dispatch,state},id){
    const {code} = await $api.delete("/contact",{params:{id}});
    if(code===OK){
      if (state.chosenContactId === id) {
        commit(UPTADECHOSENCONTACTID,null)
      }
      await dispatch(GETLIST)
    }
  },


  //updateEditingContact
  updateEditingContact({commit},editingContact){
    commit(UPTADEEDITINGCONTACT,editingContact)
  },

  //updateChosenContactId
  updateChosenContactId({commit},chosenContactId){
    commit(UPTADECHOSENCONTACTID,chosenContactId)
  }
}
